package com.hb.core.pojo.center.au.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.hb.core.pojo.parent.MPCommonEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 角色信息表
 * </p>
 *
 * @author zhaojk
 * @since 2021-11-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("au_role")
public class Role extends MPCommonEntity {

    /**
     * 父级角色
     */
    private Long parentId;

    /**
     * 企业ID
     */
    private Long orgId;

    /**
     * 角色名称
     */
    private String roleName;

    /**
     * 角色代码
     */
    private String roleCode;

    /**
     * 角色标识，(1: 招标人/采购人, 2: 投标人/供应商, 3: 代理机构)
     * 该角色标识仅作为企业的类型
     * 表中有唯一约束
     */
    private Integer roleSign;

    /**
     * 角色类型(1: 总公司管理员, 2: 分公司管理员)
     * v2.1.02 角色归属于企业
     * 20220424该字段改为用于区分各企业中的角色类型
     */
    private Integer roleType;

    /**
     * 显示权限
     * 1: 只有超级管管理员能看到(userType=1)
     * 2: 只有总公司下的用户能看到(userType=2或3, 但用户所在企业的parentId=0)
     * 3: 只有分公司下的用户能看到(userType=2或3, 但用户所在企业的parentId!=0)
     */
    private Integer showFlag;

    /**
     * 角色职能描述
     */
    private String roleDesc;

    /**
     * 角色数据权限
     *
     * @see com.hb.core.pojo.enums.RoleDataAuthEnum
     */
    private Integer roleDataAuth;

    /**
     * 参数验证方法
     * 所有的继承该类的DTO对象必须在调用时重写该方法
     * 该方法中验证的字段对应数据库中不能为空的字段
     *
     * @return
     */
    @Override
    public String paramsValid(String... fieldNames) {
        return super.paramsValid("roleName", "roleType");
    }
}
